"""
@author: 江同学呀
@file: field_common.py
@date: 2025/1/7 23:41
@desc: 
"""

from espc.utils.enum_utils import EnumBase


class IndexOptions(EnumBase):
    """
    索引选项
    """
    docs = "docs"
    freqs = "freqs"
    positions = "positions"
    offsets = "offsets"


class Similarity(EnumBase):
    """
    相似
    """
    BM25 = "BM25"
    classic = "classic"
    boolean = "boolean"


class TimeSeriesMetric(EnumBase):
    """
    时间序列指标
    """
    gauge = "gauge"
    counter = "counter"
    null = None


class Dynamic(EnumBase):
    """
    动态
    """
    true = True
    false = False
    runtime = "runtime"
    strict = "strict"
    default = true


class TimeFormat(EnumBase):
    """
    时间格式

    https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping-date-format.html
    """
    epoch_millis = "epoch_millis"
    """
    A formatter for the number of milliseconds since the epoch. Note, that this timestamp is subject to the limits of a 
    Java Long.MIN_VALUE and Long.MAX_VALUE.
    
    自纪元以来毫秒数的格式化程序。请注意，此时间戳受 Java Long.MIN_VALUE 和 Long.MAX_VALUE 的限制。
    """
    epoch_second = "epoch_second"
    """
    A formatter for the number of seconds since the epoch. Note, that this timestamp is subject to the limits of a Java 
    Long.MIN_VALUE and Long.
    MAX_VALUE divided by 1000 (the number of milliseconds in a second).
    
    自纪元以来的秒数的格式化程序。请注意，此时间戳受 Java Long.MIN_VALUE 的限制，并 Long.
    MAX_VALUE 除以 1000（一秒中的毫秒数）。
    """
    date_optional_time = "date_optional_time"
    """
    A generic ISO datetime parser, where the date must include the year at a minimum, and the time (separated by T), is 
    optional. Examples: yyyy-MM-dd'T'HH:mm:ss.SSSZ or yyyy-MM-dd.
    
    通用 ISO 日期时间分析器，其中日期必须至少包含年份，并且时间（以 分 T 隔）是可选的。示例： yyyy-MM-dd'T'HH:mm:ss.SSSZ 或 yyyy-MM-dd .
    """
    strict_date_optional_time = "strict_date_optional_time"
    """
    A generic ISO datetime parser, where the date must include the year at a minimum, and the time (separated by T), is 
    optional. Examples: yyyy-MM-dd'T'HH:mm:ss.SSSZ or yyyy-MM-dd.
    
    通用 ISO 日期时间分析器，其中日期必须至少包含年份，并且时间（以 分 T 隔）是可选的。示例： yyyy-MM-dd'T'HH:mm:ss.SSSZ 或 yyyy-MM-dd .
    """
    strict_date_optional_time_nanos = "strict_date_optional_time_nanos"
    """
    A generic ISO datetime parser, where the date must include the year at a minimum, and the time (separated by T), is 
    optional. The fraction of a second part has a nanosecond resolution. 
    Examples: yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ or yyyy-MM-dd.
    
    通用 ISO 日期时间分析器，其中日期必须至少包含年份，并且时间（以 分 T 隔）是可选的。第二部分的分数具有纳秒分辨率。
    示例： yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ 或 yyyy-MM-dd .
    """
    basic_date = "basic_date"
    """
    A basic formatter for a full date as four digit year, two digit month of year, and two digit day of month: yyyyMMdd.
    
    完整日期的基本格式化程序，表示四位数的年份、两位数的月份和两位数的月份： yyyyMMdd 。
    """
    basic_date_time = "basic_date_time"
    """
    A basic formatter that combines a basic date and time, separated by a T: yyyyMMdd'T'HHmmss.SSSZ.
    
    一个基本格式化程序，它结合了基本日期和时间，用 T yyyyMMdd'T'HHmmss.SSSZ 分隔。
    """
    basic_date_time_no_millis = "basic_date_time_no_millis"
    """
    A basic formatter that combines a basic date and time without millis, separated by a T: yyyyMMdd'T'HHmmssZ.
    
    一个基本格式化程序，它结合了一个基本日期和时间，不带毫，用 T： yyyyMMdd'T'HHmmssZ 分隔。
    """
    basic_ordinal_date = "basic_ordinal_date"
    """
    A formatter for a full ordinal date, using a four digit year and three digit dayOfYear: yyyyDDD.
    
    使用四位数的年份和三位数的 dayOfYear 的完整序数日期的格式化程序： yyyyDDD 。
    """
    basic_ordinal_date_time = "basic_ordinal_date_time"
    """
    A formatter for a full ordinal date and time, using a four digit year and three digit dayOfYear: 
    yyyyDDD'T'HHmmss.SSSZ.
    
    完整序数日期和时间的格式化程序，使用四位数的年份和三位数的 dayOfYear： yyyyDDD'T'HHmmss.SSSZ 。
    """
    basic_ordinal_date_time_no_millis = "basic_ordinal_date_time_no_millis"
    """
    A formatter for a full ordinal date and time without millis, using a four digit year and three digit dayOfYear: 
    yyyyDDD'T'HHmmssZ.
    
    不带毫数的完整序数日期和时间的格式化程序，使用四位数的年份和三位数的 dayOfYear： yyyyDDD'T'HHmmssZ 。
    """
    basic_time = "basic_time"
    """
    A basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit 
    millis, and time zone offset: HHmmss.SSSZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟、两位的秒、三位的毫数和时区偏移量的基本格式化程序： HHmmss.SSSZ 。
    """
    basic_time_no_millis = "basic_time_no_millis"
    """
    A basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and time zone 
    offset: HHmmssZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和时区偏移量的基本格式化程序： HHmmssZ 。
    """
    basic_t_time = "basic_t_time"
    """
    A basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit 
    millis, and time zone off set prefixed by T: 'T'HHmmss.SSSZ.
    
    一天中两位数的小时、两位数的小时、两位的分钟、两位的秒、三位的毫数和以 T 为前缀的时区偏移集的基本格式化程序： 'T'HHmmss.SSSZ 。
    """
    basic_t_time_no_millis = "basic_t_time_no_millis"
    """
    A basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and time zone 
    offset prefixed by T: 'T'HHmmssZ.
    
    一天中的两位数小时、两位数的小时、两位数的分钟和以 T 为前缀的时区偏移量的基本格式化程序： 'T'HHmmssZ 。
    """
    basic_week_date = "basic_week_date "
    """
    A basic formatter for a full date as four digit weekyear, two digit week of weekyear, and one digit day of week: 
    xxxx'W'wwe.
    
    完整日期的基本格式化程序，表示为四位数的工作年、两位数的工作年周和一位数字的星期日： xxxx'W'wwe 。
    """
    strict_basic_week_date = "strict_basic_week_date"
    """
    A basic formatter for a full date as four digit weekyear, two digit week of weekyear, and one digit day of week: 
    xxxx'W'wwe.
    
    完整日期的基本格式化程序，表示为四位数的工作年、两位数的工作年周和一位数字的星期日： xxxx'W'wwe 。
    """
    basic_week_date_time = "basic_week_date_time"
    """
    A basic formatter that combines a basic weekyear date and time, separated by a T: xxxx'W'wwe'T'HHmmss.SSSZ.
    
    一个基本格式化程序，它结合了基本的工作年日期和时间，用 T xxxx'W'wwe'T'HHmmss.SSSZ 分隔。
    """
    strict_basic_week_date_time = "strict_basic_week_date_time"
    """
    A basic formatter that combines a basic weekyear date and time, separated by a T: xxxx'W'wwe'T'HHmmss.SSSZ.
    
    一个基本格式化程序，它结合了基本的工作年日期和时间，用 T xxxx'W'wwe'T'HHmmss.SSSZ 分隔。
    """
    basic_week_date_time_no_millis = "basic_week_date_time_no_millis"
    """
    A basic formatter that combines a basic weekyear date and time without millis, separated by a T: 
    xxxx'W'wwe'T'HHmmssZ.
    
    一个基本格式化程序，它结合了一个不带毫数的基本工作年日期和时间，用 T xxxx'W'wwe'T'HHmmssZ 分隔。
    """
    strict_basic_week_date_time_no_millis = "strict_basic_week_date_time_no_millis"
    """
    A basic formatter that combines a basic weekyear date and time without millis, separated by a T: 
    xxxx'W'wwe'T'HHmmssZ.
    
    一个基本格式化程序，它结合了一个不带毫数的基本工作年日期和时间，用 T xxxx'W'wwe'T'HHmmssZ 分隔。
    """
    date = "date"
    """
    A formatter for a full date as four digit year, two digit month of year, and two digit day of month: yyyy-MM-dd.
    
    完整日期的格式化程序，表示四位数的年份、两位数的年份和两位数的月份： yyyy-MM-dd 。
    """
    strict_date = "strict_date"
    """
    A formatter for a full date as four digit year, two digit month of year, and two digit day of month: yyyy-MM-dd.
    
    完整日期的格式化程序，表示四位数的年份、两位数的年份和两位数的月份： yyyy-MM-dd 。
    """
    date_hour = "date_hour"
    """
    A formatter that combines a full date and two digit hour of day: yyyy-MM-dd'T'HH.
    
    结合了完整日期和两位数小时的格式化程序： yyyy-MM-dd'T'HH .
    """
    strict_date_hour = "strict_date_hour"
    """
    A formatter that combines a full date and two digit hour of day: yyyy-MM-dd'T'HH.
    
    结合了完整日期和两位数小时的格式化程序： yyyy-MM-dd'T'HH .
    """
    date_hour_minute = "date_hour_minute"
    """
    A formatter that combines a full date, two digit hour of day, and two digit minute of hour: yyyy-MM-dd'T'HH:mm.
    
    结合了完整日期、两位数的小时数和两位数的小时分钟的格式化程序： yyyy-MM-dd'T'HH:mm .
    """
    strict_date_hour_minute = "strict_date_hour_minute"
    """
    A formatter that combines a full date, two digit hour of day, and two digit minute of hour: yyyy-MM-dd'T'HH:mm.
    
    结合了完整日期、两位数的小时数和两位数的小时分钟的格式化程序： yyyy-MM-dd'T'HH:mm .
    """
    date_hour_minute_second = "date_hour_minute_second"
    """
    A formatter that combines a full date, two digit hour of day, two digit minute of hour, and two digit second of 
    minute: yyyy-MM-dd'T'HH:mm:ss.
    
    结合了完整日期、两位数的小时、两位数的小时和两位数的秒数分钟的格式化程序： yyyy-MM-dd'T'HH:mm:ss 。
    """
    strict_date_hour_minute_second = "strict_date_hour_minute_second"
    """
    A formatter that combines a full date, two digit hour of day, two digit minute of hour, and two digit second of 
    minute: yyyy-MM-dd'T'HH:mm:ss.
    
    结合了完整日期、两位数的小时、两位数的小时和两位数的秒数分钟的格式化程序： yyyy-MM-dd'T'HH:mm:ss 。
    """
    date_hour_minute_second_fraction = "date_hour_minute_second_fraction"
    """
    A formatter that combines a full date, two digit hour of day, two digit minute of hour, two digit second of minute, 
    and three digit fraction of second: yyyy-MM-dd'T'HH:mm:ss.SSS.
    
    结合了完整日期、两位数的小时、两位数的小时、两位数的分钟、两位数的分钟和三位数的秒数小数组合在一起的格式化程序： 
    yyyy-MM-dd'T'HH:mm:ss.SSS 。
    """
    strict_date_hour_minute_second_fraction = "strict_date_hour_minute_second_fraction"
    """
    A formatter that combines a full date, two digit hour of day, two digit minute of hour, two digit second of minute, 
    and three digit fraction of second: yyyy-MM-dd'T'HH:mm:ss.SSS.
    
    结合了完整日期、两位数的小时、两位数的小时、两位数的分钟、两位数的分钟和三位数的秒数小数组合在一起的格式化程序： 
    yyyy-MM-dd'T'HH:mm:ss.SSS 。
    """
    date_hour_minute_second_millis = "date_hour_minute_second_millis"
    """
    A formatter that combines a full date, two digit hour of day, two digit minute of hour, two digit second of minute, 
    and three digit fraction of second: yyyy-MM-dd'T'HH:mm:ss.SSS.
    
    结合了完整日期、两位数的小时、两位数的小时、两位数的分钟、两位数的分钟和三位数的秒数小数组合在一起的格式化程序： 
    yyyy-MM-dd'T'HH:mm:ss.SSS 。
    """
    strict_date_hour_minute_second_millis = "strict_date_hour_minute_second_millis"
    """
    A formatter that combines a full date, two digit hour of day, two digit minute of hour, two digit second of minute, 
    and three digit fraction of second: yyyy-MM-dd'T'HH:mm:ss.SSS.
    
    结合了完整日期、两位数的小时、两位数的小时、两位数的分钟、两位数的分钟和三位数的秒数小数组合在一起的格式化程序： 
    yyyy-MM-dd'T'HH:mm:ss.SSS 。
    """
    date_time = "date_time"
    """
    A formatter that combines a full date and time, separated by a T: yyyy-MM-dd'T'HH:mm:ss.SSSZ.
    
    一个格式化程序，它结合了一个完整的日期和时间，用 T yyyy-MM-dd'T'HH:mm:ss.SSSZ 分隔。
    """
    strict_date_time = "strict_date_time"
    """
    A formatter that combines a full date and time, separated by a T: yyyy-MM-dd'T'HH:mm:ss.SSSZ.
    
    一个格式化程序，它结合了一个完整的日期和时间，用 T yyyy-MM-dd'T'HH:mm:ss.SSSZ 分隔。
    """
    date_time_no_millis = "date_time_no_millis"
    """
    A formatter that combines a full date and time without millis, separated by a T: yyyy-MM-dd'T'HH:mm:ssZ.
    
    一个格式化程序，它结合了一个完整的日期和时间，不带毫，用 T： yyyy-MM-dd'T'HH:mm:ssZ 分隔。
    """
    strict_date_time_no_millis = "strict_date_time_no_millis"
    """
    A formatter that combines a full date and time without millis, separated by a T: yyyy-MM-dd'T'HH:mm:ssZ.
    
    一个格式化程序，它结合了一个完整的日期和时间，不带毫，用 T： yyyy-MM-dd'T'HH:mm:ssZ 分隔。
    """
    hour = "hour"
    """
    A formatter for a two digit hour of day: HH
    
    一天中两位数小时的格式化程序： HH
    """
    strict_hour = "strict_hour"
    """
    A formatter for a two digit hour of day: HH
    
    一天中两位数小时的格式化程序： HH
    """
    hour_minute = "hour_minute"
    """
    A formatter for a two digit hour of day and two digit minute of hour: HH:mm.
    
    一天中两位数的小时和两位数的小时分钟的格式化程序： HH:mm 。
    """
    strict_hour_minute = "strict_hour_minute"
    """
    A formatter for a two digit hour of day and two digit minute of hour: HH:mm.
    
    一天中两位数的小时和两位数的小时分钟的格式化程序： HH:mm 。
    """
    hour_minute_second = "hour_minute_second"
    """
    A formatter for a two digit hour of day, two digit minute of hour, and two digit second of minute: HH:mm:ss.
    
    一天中两位数的小时、两位数的小时和两位数的分钟秒的格式化程序： HH:mm:ss 。
    """
    strict_hour_minute_second = "strict_hour_minute_second"
    """
    A formatter for a two digit hour of day, two digit minute of hour, and two digit second of minute: HH:mm:ss.
    
    一天中两位数的小时、两位数的小时和两位数的分钟秒的格式化程序： HH:mm:ss 。
    """
    hour_minute_second_fraction = "hour_minute_second_fraction"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and three digit 
    fraction of second: HH:mm:ss.SSS.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和两位数的秒和三位数的秒的格式化程序： HH:mm:ss.SSS 。
    """
    strict_hour_minute_second_fraction = "strict_hour_minute_second_fraction"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and three digit 
    fraction of second: HH:mm:ss.SSS.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和两位数的秒和三位数的秒的格式化程序： HH:mm:ss.SSS 。
    """
    hour_minute_second_millis = "hour_minute_second_millis"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and three digit 
    fraction of second: HH:mm:ss.SSS.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和两位数的秒和三位数的秒的格式化程序： HH:mm:ss.SSS 。
    """
    strict_hour_minute_second_millis = "strict_hour_minute_second_millis"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and three digit 
    fraction of second: HH:mm:ss.SSS.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和两位数的秒和三位数的秒的格式化程序： HH:mm:ss.SSS 。
    """
    ordinal_date = "ordinal_date"
    """
    A formatter for a full ordinal date, using a four digit year and three digit dayOfYear: yyyy-DDD.
    
    使用四位数的年份和三位数的 dayOfYear 的完整序数日期的格式化程序： yyyy-DDD 。
    """
    strict_ordinal_date = "strict_ordinal_date"
    """
    A formatter for a full ordinal date, using a four digit year and three digit dayOfYear: yyyy-DDD.
    
    使用四位数的年份和三位数的 dayOfYear 的完整序数日期的格式化程序： yyyy-DDD 。
    """
    ordinal_date_time = "ordinal_date_time"
    """
    A formatter for a full ordinal date and time, using a four digit year and three digit dayOfYear: 
    yyyy-DDD'T'HH:mm:ss.SSSZ.
    
    完整序数日期和时间的格式化程序，使用四位数的年份和三位数的 dayOfYear： yyyy-DDD'T'HH:mm:ss.SSSZ 。
    """
    strict_ordinal_date_time = "strict_ordinal_date_time"
    """
    A formatter for a full ordinal date and time, using a four digit year and three digit dayOfYear: 
    yyyy-DDD'T'HH:mm:ss.SSSZ.
    
    完整序数日期和时间的格式化程序，使用四位数的年份和三位数的 dayOfYear： yyyy-DDD'T'HH:mm:ss.SSSZ 。
    """
    ordinal_date_time_no_millis = "ordinal_date_time_no_millis"
    """
    A formatter for a full ordinal date and time without millis, using a four digit year and three digit dayOfYear: 
    yyyy-DDD'T'HH:mm:ssZ.
    
    不带毫数的完整序数日期和时间的格式化程序，使用四位数的年份和三位数的 dayOfYear： yyyy-DDD'T'HH:mm:ssZ 。
    """
    strict_ordinal_date_time_no_millis = "strict_ordinal_date_time_no_millis"
    """
    A formatter for a full ordinal date and time without millis, using a four digit year and three digit dayOfYear: 
    yyyy-DDD'T'HH:mm:ssZ.
    
    不带毫数的完整序数日期和时间的格式化程序，使用四位数的年份和三位数的 dayOfYear： yyyy-DDD'T'HH:mm:ssZ 。
    """
    time = "time"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit fraction 
    of second, and time zone offset: HH:mm:ss.SSSZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟、两位数的秒、三位数的秒和时区偏移量的格式化程序： HH:mm:ss.SSSZ 。
    """
    strict_time = "strict_time"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit fraction 
    of second, and time zone offset: HH:mm:ss.SSSZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟、两位数的秒、三位数的秒和时区偏移量的格式化程序： HH:mm:ss.SSSZ 。
    """
    time_no_millis = "time_no_millis"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and time zone offset: 
    HH:mm:ssZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和时区偏移量的格式化程序： HH:mm:ssZ 。
    """
    strict_time_no_millis = "strict_time_no_millis"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and time zone offset: 
    HH:mm:ssZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和时区偏移量的格式化程序： HH:mm:ssZ 。
    """
    t_time = "t_time"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit fraction 
    of second, and time zone offset prefixed by T: 'T'HH:mm:ss.SSSZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟、两位数的秒、三位数的秒数以及以 T 为前缀的时区偏移量的格式化程序： 'T'HH:mm:ss.SSSZ 。
    """
    strict_t_time = "strict_t_time"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit fraction 
    of second, and time zone offset prefixed by T: 'T'HH:mm:ss.SSSZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟、两位数的秒、三位数的秒数以及以 T 为前缀的时区偏移量的格式化程序： 'T'HH:mm:ss.SSSZ 。
    """
    t_time_no_millis = "t_time_no_millis"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and time zone offset 
    prefixed by T: 'T'HH:mm:ssZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和以 T 为前缀的时区偏移量的格式化程序： 'T'HH:mm:ssZ 。
    """
    strict_t_time_no_millis = "strict_t_time_no_millis"
    """
    A formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and time zone offset 
    prefixed by T: 'T'HH:mm:ssZ.
    
    一天中两位数的小时、两位数的小时、两位数的分钟和以 T 为前缀的时区偏移量的格式化程序： 'T'HH:mm:ssZ 。
    """
    week_date = "week_date"
    """
    A formatter for a full date as four digit weekyear, two digit week of weekyear, and one digit day of week: 
    xxxx-'W'ww-e.
    
    完整日期的格式化程序，表示四位数的工作年、两位数的工作年周数和一位数的星期几： xxxx-'W'ww-e 。
    """
    strict_week_date = "strict_week_date"
    """
    A formatter for a full date as four digit weekyear, two digit week of weekyear, and one digit day of week: 
    xxxx-'W'ww-e.
    
    完整日期的格式化程序，表示四位数的工作年、两位数的工作年周数和一位数的星期几： xxxx-'W'ww-e 。
    """
    week_date_time = "week_date_time"
    """
    A formatter that combines a full weekyear date and time, separated by a T: xxxx-'W'ww-e'T'HH:mm:ss.SSSZ.
    
    一个格式化程序，它结合了一个完整的工作年日期和时间，用 T xxxx-'W'ww-e'T'HH:mm:ss.SSSZ 分隔。
    """
    strict_week_date_time = "strict_week_date_time"
    """
    A formatter that combines a full weekyear date and time, separated by a T: xxxx-'W'ww-e'T'HH:mm:ss.SSSZ.
    
    一个格式化程序，它结合了一个完整的工作年日期和时间，用 T xxxx-'W'ww-e'T'HH:mm:ss.SSSZ 分隔。
    """
    week_date_time_no_millis = "week_date_time_no_millis"
    """
    A formatter that combines a full weekyear date and time without millis, separated by a T: xxxx-'W'ww-e'T'HH:mm:ssZ.
    
    一个格式化程序，它结合了一个完整的工作年日期和时间，没有毫数，用 T： xxxx-'W'ww-e'T'HH:mm:ssZ 分隔。
    """
    strict_week_date_time_no_millis = "strict_week_date_time_no_millis"
    """
    A formatter that combines a full weekyear date and time without millis, separated by a T: xxxx-'W'ww-e'T'HH:mm:ssZ.
    
    一个格式化程序，它结合了一个完整的工作年日期和时间，没有毫数，用 T： xxxx-'W'ww-e'T'HH:mm:ssZ 分隔。
    """
    weekyear = "weekyear"
    """
    A formatter for a four digit weekyear: xxxx.
    
    四位数工作年的格式化程序： xxxx .
    """
    strict_weekyear = "strict_weekyear"
    """
    A formatter for a four digit weekyear: xxxx.
    
    四位数工作年的格式化程序： xxxx .
    """
    weekyear_week = "weekyear_week"
    """
    A formatter for a four digit weekyear and two digit week of weekyear: xxxx-'W'ww.
    
    四位数的星期年和两位数的星期年的格式化程序： xxxx-'W'ww .
    """
    strict_weekyear_week = "strict_weekyear_week"
    """
    A formatter for a four digit weekyear and two digit week of weekyear: xxxx-'W'ww.
    
    四位数的星期年和两位数的星期年的格式化程序： xxxx-'W'ww .
    """
    weekyear_week_day = "weekyear_week_day"
    """
    A formatter for a four digit weekyear, two digit week of weekyear, and one digit day of week: xxxx-'W'ww-e.
    
    四位数的工作年、两位数的工作年周和一位数的星期日的格式化程序： xxxx-'W'ww-e 。
    """
    strict_weekyear_week_day = "strict_weekyear_week_day"
    """
    A formatter for a four digit weekyear, two digit week of weekyear, and one digit day of week: xxxx-'W'ww-e.
    
    四位数的工作年、两位数的工作年周和一位数的星期日的格式化程序： xxxx-'W'ww-e 。
    """
    year = "year"
    """
    A formatter for a four digit year: yyyy.
    
    四位数年份的格式化程序： yyyy .
    """
    strict_year = "strict_year"
    """
    A formatter for a four digit year: yyyy.
    
    四位数年份的格式化程序： yyyy .
    """
    year_month = "year_month"
    """
    A formatter for a four digit year and two digit month of year: yyyy-MM.
    
    四位数的年份和两位数的年份月份的格式化程序： yyyy-MM 。
    """
    strict_year_month = "strict_year_month"
    """
    A formatter for a four digit year and two digit month of year: yyyy-MM.
    
    四位数的年份和两位数的年份月份的格式化程序： yyyy-MM 。
    """
    year_month_day = "year_month_day"
    """
    A formatter for a four digit year, two digit month of year, and two digit day of month: yyyy-MM-dd.
    
    四位数的年份、两位数的年份和两位数的月份日期的格式化程序： yyyy-MM-dd 。
    """
    strict_year_month_day = "strict_year_month_day"
    """
    A formatter for a four digit year, two digit month of year, and two digit day of month: yyyy-MM-dd.
    
    四位数的年份、两位数的年份和两位数的月份日期的格式化程序： yyyy-MM-dd 。
    """
    yyyy_mm_dd_hh_mm_ss_sss = "yyyy-MM-dd HH:mm:ss.SSS"
    yyyy_mm_dd_hh_mm_ss = "yyyy-MM-dd HH:mm:ss"
    yyyy_mm_dd = "yyyy-MM-dd"
    yyyy_mm = "yyyy-MM"
    yyyy = "yyyy"
    hh_mm_ss_sss = "HH:mm:ss.SSS"
    hh_mm_ss = "HH:mm:ss"
    hh_mm = "HH:mm"
    hh = "HH"


class Range(EnumBase):
    gt = "gt"
    gte = "gte"
    lt = "lt"
    lte = "lte"


class Metrics(EnumBase):
    """
    度量
    """
    min = "min"
    max = "max"
    sum = "sum"
    value_count = "value_count"


class TermVector(EnumBase):
    """
    术语向量

    https://www.elastic.co/guide/en/elasticsearch/reference/7.17/term-vector.html

    Term vectors contain information about the terms produced by the analysis process, including:

    - a list of terms.
    - the position (or order) of each term.
    - the start and end character offsets mapping the term to its origin in the original string.
    - payloads (if they are available) — user-defined binary data associated with each term position.

    术语向量包含有关分析过程生成的术语的信息，包括：

    - 术语列表。
    - 每个术语的位置（或顺序）。
    - 开始和结束字符偏移量将术语映射到其在原始字符串中的源。
    - Payloads （if they available） — 与每个术语位置关联的用户定义的二进制数据。

    """
    default = "no"
    no = "no"
    """
    No term vectors are stored. (default)
    不存储任何术语向量。（默认）
    """
    yes = "yes"
    """
    Just the terms in the field are stored.
    仅存储字段中的术语。
    """
    with_positions = "with_positions"
    """
    Terms and positions are stored.
    条款和职位被存储。
    """
    with_offsets = "with_offsets"
    """
    Terms and character offsets are stored.
    将存储术语和字符偏移量。
    """
    with_positions_offsets = "with_positions_offsets"
    """
    Terms, positions, and character offsets are stored.
    将存储术语、位置和字符偏移量。
    """
    with_positions_payloads = "with_positions_payloads"
    """
    Terms, positions, and payloads are stored.
    术语、位置和有效载荷被存储。
    """
    with_positions_offsets_payloads = "with_positions_offsets_payloads"
    """
    Terms, positions, offsets and payloads are stored.
    术语、位置、偏移量和有效载荷被存储。
    """


class PrefixTree(EnumBase):
    """
    前缀树
    """
    geohash = "geohash"
    quadtree = "quadtree"
    default = quadtree


class Precision(EnumBase):
    """
    精度
    """
    in_ = "in"  # 英尺
    inch = "inch"  # 英尺
    yd = "yd"  #
    yard = "yard"  #
    mi = "mi"  # 英里
    miles = "miles"  # 英里
    km = "km"  # 公里
    kilometers = "kilometers"  # 公里
    m = "m"  # 米
    meters = "meters"  # 米
    cm = "cm"  # 厘米
    centimeters = "centimeters"  # 厘米
    mm = "mm"  # 毫米
    millimeters = "millimeters"  # 毫米


class Strategy(EnumBase):
    """
    策略
    """
    recursive = "recursive"
    term = "term"


class Orientation(EnumBase):
    """
    坐标系规则
    """
    right = "right"  # 右
    ccw = "ccw"  # 逆时针
    counterclockwise = "counterclockwise"  # 逆时针
    left = "left"  # 左
    cw = "cw"  # 顺时针
    clockwise = "clockwise"  # 顺时针
